package com.taikang.hmp.frame.user.service.impl;

import java.util.List;

import com.ibatis.common.util.IDHelper;
import com.taikang.hmp.frame.common.datastructre.Dto;
import com.taikang.hmp.frame.common.datastructre.support.BaseDto;
import com.taikang.hmp.frame.common.service.impl.BaseServiceImpl;
import com.taikang.hmp.frame.user.service.IRoleManagementService;

/** 
 * 角色管理与授权
 * author:qrp
 * time:2015年11月9日 上午10:44:05
 */
public class RoleManagementServiceImpl extends BaseServiceImpl implements IRoleManagementService{
	
	@Override
	public String getSelfPerm(String uid) {
		// TODO Auto-generated method stub
		return null;
	}
	
	public List<Dto> getAllRole() {
		return super.getNewDao().queryForList("roleManagement_space.getAllRole");
	}

	public List<Dto> getPermission() {
		return super.getNewDao().queryForList("roleManagement_space.getAllPermissionnew");
	}

	public boolean queryRoleUser(Dto paramDto) {
		String roleid = paramDto.getAsString("roleId");
		List<Dto> info = super.getNewDao().queryForList("roleManagement_space.getRoleUser",roleid);
		Boolean temp = false;
		if(info.size() > 0){
			temp = true;
		}
		return temp;
	}

	public boolean delRole(Dto paramDto) {
		// 取得roleId
		String roleId = paramDto.getAsString("roleId");
		if(roleId != null && !roleId.equals("")){
			// 删除角色表的数据
			super.getNewDao().delete("roleManagement_space.del_roledef", roleId);
			// 删除角色组表的数据
			super.getNewDao().delete("roleManagement_space.del_role_groupdef", roleId);
			// 删除角色权限表的数据
			super.getNewDao().delete("roleManagement_space.del_role_permissiondef", roleId);
			return true;
		}else{
			new RuntimeException("roleId不能为空！");
			return false;
		}
	}

	public List<Dto> getPermissionByRole(String roleId) {
		return super.getNewDao().queryForList("roleManagement_space.getPermissionByRoleId", roleId);
	}

	public Boolean isExistRoleName(Dto paramDto) {
		String roleName = paramDto.getAsString("roleName");
		List<?> flag = super.getNewDao().queryForList("roleManagement_space.isExistRoleName", roleName);
		if(flag.size() == 0){
			return false;
		}else{
			return true;
		}
	}

	public boolean savePermission(Dto paramDto) {
		Dto resultDto = new BaseDto();
		String roleName = paramDto.getAsString("roleName");
		resultDto.put("roleName", roleName);
		String ID = IDHelper.genuuid();
		resultDto.put("ID", ID);
		// 更新角色表的数据
		super.getNewDao().insert("roleManagement_space.insert_roledef", resultDto);
		resultDto.put("roleID", ID);
		String nodes = paramDto.getAsString("nodeId");
		String node[] = nodes.split(",");
		for (int i = 0; i < node.length; i++) {
			resultDto.put("permission_id", node[i]);
			// 插入角色权限表的数据
			super.getNewDao().insert("roleManagement_space.save_role_permission", resultDto);
		}
		return true;
	}

	public boolean saveEditPermission(Dto paramDto) {
		Dto resultDto = new BaseDto();
		
		String roleName = paramDto.getAsString("roleName");
		String roleId = paramDto.getAsString("roleId");
		resultDto.put("roleName", roleName);
		// 更新角色表的数据
		resultDto.put("ID", Integer.parseInt(roleId));
		super.getNewDao().update("roleManagement_space.update_roledef", resultDto);
		
		// 删除原有角色权限表的数据
		super.getNewDao().delete("roleManagement_space.del_role_permissiondef", roleId);
		
		String nodes = paramDto.getAsString("nodeId");
		String node[] = nodes.split(",");
		for (int i = 0; i < node.length; i++) {
			resultDto.put("nodeId", node[i]);
			resultDto.put("roleId", Integer.parseInt(roleId));
			// 插入角色权限表的数据
			super.getNewDao().insert("roleManagement_space.save_role_permission", resultDto);
		}
		return true;
	}


}
